From: Richard M. Stallman Date: Fri, 28 May 1993 18:35:23 +0000 (+0000) Subject: (Info-insert-dir): Ignore duplicate directories. X-Git-Tag: archive/raspbian/1%29.2+1-2+rpi1^2~5^2~95848 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https:/www.github.com/%22bookmarks:///%22http:/www.example.com/cgi/%22https:/www.github.com/%22bookmarks:/?a=commitdiff_plain;h=f4008b6ee93cd08138156009ef0c91d4f107776d;p=emacs.git (Info-insert-dir): Ignore duplicate directories. --- diff --git a/lisp/info.el b/lisp/info.el index 914e35fe267..e2079644102 100644 --- a/lisp/info.el +++ b/lisp/info.el @@ -287,36 +287,39 @@ to read a file name from the minibuffer." (if Info-dir-contents (insert Info-dir-contents) (let ((dirs Info-directory-list) - buffers buffer others nodes) + buffers buffer others nodes dirs-done) ;; Search the directory list for the directory file. (while dirs - ;; Try several variants of specified name. - ;; Try upcasing, appending `.info', or both. - (let* (temp - (buffer - (cond - ((progn (setq temp (expand-file-name "DIR" (car dirs))) - (file-exists-p temp)) - (find-file-noselect temp)) - ((progn (setq temp (expand-file-name "dir" (car dirs))) - (file-exists-p temp)) - (find-file-noselect temp)) - ((progn (setq temp (expand-file-name "DIR.INFO" (car dirs))) - (file-exists-p temp)) - (find-file-noselect temp)) - ((progn (setq temp (expand-file-name "dir.info" (car dirs))) - (file-exists-p temp)) - (find-file-noselect temp))))) - (if buffer (setq buffers (cons buffer buffers))) - (setq dirs (cdr dirs)))) + (or (member (file-truename (expand-file-name (car dirs))) dirs-done) + (member (directory-file-name (file-truename (expand-file-name (car dirs)))) + dirs-done) + ;; Try several variants of specified name. + ;; Try upcasing, appending `.info', or both. + (let* (temp + (buffer + (cond + ((progn (setq temp (expand-file-name "DIR" (car dirs))) + (file-exists-p temp)) + (find-file-noselect temp)) + ((progn (setq temp (expand-file-name "dir" (car dirs))) + (file-exists-p temp)) + (find-file-noselect temp)) + ((progn (setq temp (expand-file-name "DIR.INFO" (car dirs))) + (file-exists-p temp)) + (find-file-noselect temp)) + ((progn (setq temp (expand-file-name "dir.info" (car dirs))) + (file-exists-p temp)) + (find-file-noselect temp))))) + (setq dirs-done + (cons (file-truename (expand-file-name (car dirs))) + dirs-done)) + (if buffer (setq buffers (cons buffer buffers))))) + (setq dirs (cdr dirs))) ;; Distinguish the dir file that comes with Emacs from all the - ;; others. [This sounds like baloney - who knows what order - ;; Info-directory-list is in, especially after checking the - ;; INFOPATH variable, and why should Emacs's dir be special? If - ;; you understand what this comment should have said, please - ;; change it.] + ;; others. Yes, that is really what this is supposed to do. + ;; If it doesn't work, fix it. (setq buffer (car buffers) others (cdr buffers))